nethackfandomcom-20200214-history
Source:NetHack 1.4f/rm.h
Below is the full text to rm.h from the source code of NetHack 1.4f. To link to a particular line, write [[NetHack 1.4f/rm.h#line123]], for example. Warning! This is the source code from an old release. For the latest release, see Source code 1. /* SCCS Id: @(#)rm.h 1.4 87/08/08 2. /* Copyright © Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3. /* rm.h - version 1.0.2 */ 4. 5. /* 6. * The dungeon presentation graphics code and data structures were rewritten 7. * and generalized for NetHack's release 2 by Eric S. Raymond (eric@snark) 8. * building on Don G. Kneller's MS-DOS implementation. See options.c for 9. * the code that permits the user to set the contents of the symbol structure. 10. */ 11. 12. /* Level location types */ 13. #define HWALL 1 14. #define VWALL 2 15. #define SDOOR 3 16. #define SCORR 4 17. #define LDOOR 5 18. #define POOL 6 /* not yet fully implemented */ 19. /* this should in fact be a bit like lit */ 20. #define DOOR 7 21. #define CORR 8 22. #define ROOM 9 23. #define STAIRS 10 24. #define FOUNTAIN 11 25. #define THRONE 12 26. 27. /* 28. * Avoid using the level types in inequalities: 29. * these types are subject to change. 30. * Instead, use one of the macros below. 31. */ 32. #define IS_WALL(typ) ((typ) <= VWALL) 33. #define IS_ROCK(typ) ((typ) < POOL) /* absolutely nonaccessible */ 34. #define ACCESSIBLE(typ) ((typ) >= DOOR) /* good position */ 35. #define IS_ROOM(typ) ((typ) >= ROOM) /* ROOM or STAIRS */ 36. #define ZAP_POS(typ) ((typ) > DOOR) 37. #define IS_POOL(typ) ((typ) POOL) 38. #define IS_THRONE(typ) ((typ) THRONE) 39. #define IS_FOUNTAIN(typ) ((typ) FOUNTAIN) 40. 41. /* 42. * The level-map symbols may be compiled in or defined at initialization time 43. */ 44. #ifndef GRAPHICS 45. 46. #define STONE_SYM ' ' 47. #define VWALL_SYM '|' 48. #define HWALL_SYM '-' 49. #define TLCORN_SYM '+' 50. #define TRCORN_SYM '+' 51. #define BLCORN_SYM '+' 52. #define BRCORN_SYM '+' 53. #define DOOR_SYM '+' 54. #define ROOM_SYM '.' 55. #ifdef QUEST 56. # define CORR_SYM ':' 57. #else 58. # define CORR_SYM '#' 59. #endif 60. #define UP_SYM '<' 61. #define DN_SYM '>' 62. #define TRAP_SYM '^' 63. #define POOL_SYM '}' 64. #define FOUNTAIN_SYM '{' 65. #define THRONE_SYM '\\' 66. #define WEB_SYM '"' 67. #else /* GRAPHICS */ 68. 69. /* screen symbols for using character graphics. */ 70. struct symbols { 71. unsigned char stone, vwall, hwall, tlcorn, trcorn, blcorn, brcorn; 72. unsigned char door, room, corr, upstair, dnstair, trap; 73. #ifdef FOUNTAINS 74. unsigned char pool, fountain; 75. #endif 76. #ifdef NEWCLASS 77. unsigned char throne; 78. #endif 79. #ifdef SPIDERS 80. unsigned char web; 81. #endif 82. }; 83. extern struct symbols showsyms, defsyms; 84. 85. #define STONE_SYM showsyms.stone 86. #define VWALL_SYM showsyms.vwall 87. #define HWALL_SYM showsyms.hwall 88. #define TLCORN_SYM showsyms.tlcorn 89. #define TRCORN_SYM showsyms.trcorn 90. #define BLCORN_SYM showsyms.blcorn 91. #define BRCORN_SYM showsyms.brcorn 92. #define DOOR_SYM showsyms.door 93. #define ROOM_SYM showsyms.room 94. #define CORR_SYM showsyms.corr 95. #define UP_SYM showsyms.upstair 96. #define DN_SYM showsyms.dnstair 97. #define TRAP_SYM showsyms.trap 98. #define POOL_SYM showsyms.pool 99. #define FOUNTAIN_SYM showsyms.fountain 100. #define THRONE_SYM showsyms.throne 101. #define WEB_SYM showsyms.web 102. #endif 103. 104. #define ERRCHAR ']' 105. 106. #define MAXPCHARS 17 /* maximum number of mapped characters */ 107. 108. #define IS_CORNER(x) ((x) TLCORN_SYM || (x) TRCORN_SYM \ 109. || (x) BLCORN_SYM || (x) BRCORN_SYM) 110. 111. /* 112. * The structure describing a coordinate position. 113. * Before adding fields, remember that this will significantly affect 114. * the size of temporary files and save files. 115. */ 116. #ifdef MSDOS 117. /* Save disk space by using unsigned char's instead of unsigned ints 118. */ 119. struct rm { 120. uchar scrsym; 121. unsigned typ:5; 122. unsigned new:1; 123. unsigned seen:1; 124. unsigned lit:1; 125. }; 126. #else 127. struct rm { 128. char scrsym; 129. Bitfield(typ,5); 130. Bitfield(new,1); 131. Bitfield(seen,1); 132. Bitfield(lit,1); 133. }; 134. #endif /* MSDOS /**/ 135. extern struct rm levlCOLNOROWNO; 136. 137. #ifdef DGK 138. #define ACTIVE 1 139. #define SWAPPED 2 140. 141. struct finfo { 142. int where; 143. long time; 144. long size; 145. }; 146. extern struct finfo fileinfo[]; 147. #endif rm.h